package vo

import (
	"boy-go/pkg/request"
	"boy-go/pkg/xtime"
	"time"
)

type GenTableColumnModel struct {
	ColumnId      int64   `json:"columnId" form:"columnId"`           // 编号
	TableId       *int64  `json:"tableId" form:"tableId"`             // 归属表编号
	ColumnName    *string `json:"columnName" form:"columnName"`       // 列名称
	ColumnComment *string `json:"columnComment" form:"columnComment"` // 列描述
	ColumnType    *string `json:"columnType" form:"columnType"`       // 列类型
	StructType    *string `json:"structType" form:"structType"`       // struct类型
	StructField   *string `json:"structField" form:"structField"`     // struct字段名
	IsPk          *string `json:"isPk" form:"isPk"`                   // 是否主键（1是）
	IsIncrement   *string `json:"isIncrement" form:"isIncrement"`     // 是否自增（1是）
	IsRequired    *string `json:"isRequired" form:"isRequired"`       // 是否必填（1是）
	IsInsert      *string `json:"isInsert" form:"isInsert"`           // 是否为插入字段（1是）
	IsEdit        *string `json:"isEdit" form:"isEdit"`               // 是否编辑字段（1是）
	IsList        *string `json:"isList" form:"isList"`               // 是否列表字段（1是）
	IsQuery       *string `json:"isQuery" form:"isQuery"`             // 是否查询字段（1是）
	QueryType     *string `json:"queryType" form:"queryType"`         // 查询方式（等于、不等于、大于、小于、范围）
	HtmlType      *string `json:"htmlType" form:"htmlType"`           // 显示类型（文本框、文本域、下拉框、复选框、单选框、日期控件）
	DictType      *string `json:"dictType" form:"dictType"`           // 字典类型
	Sort          *int64  `json:"sort" form:"sort"`                   // 排序
	CreateBy      *string `json:"createBy" form:"createBy"`           // 创建者
	CreateTime    *string `json:"createTime" form:"createTime"`       // 创建时间
	UpdateBy      *string `json:"updateBy" form:"updateBy"`           // 更新者
	UpdateTime    *string `json:"updateTime" form:"updateTime"`       // 更新时间
}

func (item *GenTableColumnModel) CreateAt(t *time.Time) {
	item.CreateTime = xtime.TS.Format(t)
}
func (item *GenTableColumnModel) UpdateAt(t *time.Time) {
	item.UpdateTime = xtime.TS.Format(t)
}

type QueryGenTableColumnReq struct {
	request.PageRequest         // 分页参数
	ColumnId            int64   `json:"columnId" form:"columnId"`           // 编号
	TableId             *int64  `json:"tableId" form:"tableId"`             // 归属表编号
	ColumnName          *string `json:"columnName" form:"columnName"`       // 列名称
	ColumnComment       *string `json:"columnComment" form:"columnComment"` // 列描述
	ColumnType          *string `json:"columnType" form:"columnType"`       // 列类型
	StructType          *string `json:"structType" form:"structType"`       // struct类型
	StructField         *string `json:"structField" form:"structField"`     // struct字段名
	IsPk                *string `json:"isPk" form:"isPk"`                   // 是否主键（1是）
	IsIncrement         *string `json:"isIncrement" form:"isIncrement"`     // 是否自增（1是）
	IsRequired          *string `json:"isRequired" form:"isRequired"`       // 是否必填（1是）
	IsInsert            *string `json:"isInsert" form:"isInsert"`           // 是否为插入字段（1是）
	IsEdit              *string `json:"isEdit" form:"isEdit"`               // 是否编辑字段（1是）
	IsList              *string `json:"isList" form:"isList"`               // 是否列表字段（1是）
	IsQuery             *string `json:"isQuery" form:"isQuery"`             // 是否查询字段（1是）
	QueryType           *string `json:"queryType" form:"queryType"`         // 查询方式（等于、不等于、大于、小于、范围）
	HtmlType            *string `json:"htmlType" form:"htmlType"`           // 显示类型（文本框、文本域、下拉框、复选框、单选框、日期控件）
	DictType            *string `json:"dictType" form:"dictType"`           // 字典类型
	Sort                *int64  `json:"sort" form:"sort"`                   // 排序
	CreateBy            *string `json:"createBy" form:"createBy"`           // 创建者
	CreateTime          *string `json:"createTime" form:"createTime"`       // 创建时间
	UpdateBy            *string `json:"updateBy" form:"updateBy"`           // 更新者
	UpdateTime          *string `json:"updateTime" form:"updateTime"`       // 更新时间
}
type ListGenTableColumnRsp struct {
	List  []*GenTableColumnModel
	Total int64
}

type AddGenTableColumnReq struct {
	ColumnId      int64   `json:"columnId" form:"columnId"`           // 编号
	TableId       *int64  `json:"tableId" form:"tableId"`             // 归属表编号
	ColumnName    *string `json:"columnName" form:"columnName"`       // 列名称
	ColumnComment *string `json:"columnComment" form:"columnComment"` // 列描述
	ColumnType    *string `json:"columnType" form:"columnType"`       // 列类型
	StructType    *string `json:"structType" form:"structType"`       // struct类型
	StructField   *string `json:"structField" form:"structField"`     // struct字段名
	IsPk          *string `json:"isPk" form:"isPk"`                   // 是否主键（1是）
	IsIncrement   *string `json:"isIncrement" form:"isIncrement"`     // 是否自增（1是）
	IsRequired    *string `json:"isRequired" form:"isRequired"`       // 是否必填（1是）
	IsInsert      *string `json:"isInsert" form:"isInsert"`           // 是否为插入字段（1是）
	IsEdit        *string `json:"isEdit" form:"isEdit"`               // 是否编辑字段（1是）
	IsList        *string `json:"isList" form:"isList"`               // 是否列表字段（1是）
	IsQuery       *string `json:"isQuery" form:"isQuery"`             // 是否查询字段（1是）
	QueryType     *string `json:"queryType" form:"queryType"`         // 查询方式（等于、不等于、大于、小于、范围）
	HtmlType      *string `json:"htmlType" form:"htmlType"`           // 显示类型（文本框、文本域、下拉框、复选框、单选框、日期控件）
	DictType      *string `json:"dictType" form:"dictType"`           // 字典类型
	Sort          *int64  `json:"sort" form:"sort"`                   // 排序
	CreateBy      *string `json:"createBy" form:"createBy"`           // 创建者
	CreateTime    *string `json:"createTime" form:"createTime"`       // 创建时间
	UpdateBy      *string `json:"updateBy" form:"updateBy"`           // 更新者
	UpdateTime    *string `json:"updateTime" form:"updateTime"`       // 更新时间
}
type AddGenTableColumnRsp struct {
	ColumnId int64 `json:"columnId" form:"columnId"` // 编号
}

type EditGenTableColumnReq struct {
	ColumnId      int64   `json:"columnId" form:"columnId"`           // 编号
	TableId       *int64  `json:"tableId" form:"tableId"`             // 归属表编号
	ColumnName    *string `json:"columnName" form:"columnName"`       // 列名称
	ColumnComment *string `json:"columnComment" form:"columnComment"` // 列描述
	ColumnType    *string `json:"columnType" form:"columnType"`       // 列类型
	StructType    *string `json:"structType" form:"structType"`       // struct类型
	StructField   *string `json:"structField" form:"structField"`     // struct字段名
	IsPk          *string `json:"isPk" form:"isPk"`                   // 是否主键（1是）
	IsIncrement   *string `json:"isIncrement" form:"isIncrement"`     // 是否自增（1是）
	IsRequired    *string `json:"isRequired" form:"isRequired"`       // 是否必填（1是）
	IsInsert      *string `json:"isInsert" form:"isInsert"`           // 是否为插入字段（1是）
	IsEdit        *string `json:"isEdit" form:"isEdit"`               // 是否编辑字段（1是）
	IsList        *string `json:"isList" form:"isList"`               // 是否列表字段（1是）
	IsQuery       *string `json:"isQuery" form:"isQuery"`             // 是否查询字段（1是）
	QueryType     *string `json:"queryType" form:"queryType"`         // 查询方式（等于、不等于、大于、小于、范围）
	HtmlType      *string `json:"htmlType" form:"htmlType"`           // 显示类型（文本框、文本域、下拉框、复选框、单选框、日期控件）
	DictType      *string `json:"dictType" form:"dictType"`           // 字典类型
	Sort          *int64  `json:"sort" form:"sort"`                   // 排序
	CreateBy      *string `json:"createBy" form:"createBy"`           // 创建者
	CreateTime    *string `json:"createTime" form:"createTime"`       // 创建时间
	UpdateBy      *string `json:"updateBy" form:"updateBy"`           // 更新者
	UpdateTime    *string `json:"updateTime" form:"updateTime"`       // 更新时间
}
type EditGenTableColumnRsp struct {
	ColumnId int64 `json:"columnId" form:"columnId"` // 编号
}
